package cn.com.mtons.designpattern.singleton.staticinnerclass;

/**
 * 静态内部类（延迟初始化占位类）
 * -- JVM将推迟SingletonHolder的初始化操作，直到开始使用这个类时才初始化
 * -- 由于通过一个静态初始化来初始化Singleton，因此不需要额外的同步
 * -- 当任何一个线程第一次调用getInstance时，都会使SingletonHolder被加载和被初始化，此时静态初始化器将执行Singleton的初始化操作
 */
public class Singleton {

    private static class SingletonHolder {
        private static final Singleton INSTANCE = new Singleton();
    }
    private Singleton(){}
    public static Singleton getInstance(){
        return SingletonHolder.INSTANCE;
    }
}
